#ifndef __MOTOR_H__
#define __MOTOR_H__


#include "stm8s.h"
#include "esapi.h"
#include "es_pwm30.h"




/*
抽屉锁控制器

带限位开关的电机正反转控制器

使用MOTOR DRIVER v2.1
真值表
s1 s2 状态
0 1 正向导通
1 0 反向导通
1 1 浮空
0 0 不允许

s1-PD4  ch0
s2-PA1  ch1
*/
#define s1 0
#define s2 1





/*
POS1-PB4
POS2-PB5
KEY1-PC4
KEY2-PC3
*/
#define POS_1_PORT GPIOB
#define POS_2_PORT GPIOB
#define POS_1_PIN GPIO_PIN_4
#define POS_2_PIN GPIO_PIN_5

#define KEY_1_PORT GPIOC
#define KEY_2_PORT GPIOC
#define KEY_1_PIN GPIO_PIN_4
#define KEY_2_PIN GPIO_PIN_3

//限位开关状态(SET或RESET)
#define pos1_limit()  GPIO_ReadInputPin(POS_1_PORT, POS_1_PIN)
#define pos2_limit()  GPIO_ReadInputPin(POS_2_PORT, POS_2_PIN)


#define s1_set1() GPIO_WriteHigh(GPIOD,GPIO_PIN_4)
#define s1_set0() GPIO_WriteLow(GPIOD,GPIO_PIN_4)

#define s2_set1() GPIO_WriteHigh(GPIOA,GPIO_PIN_1)
#define s2_set0() GPIO_WriteLow(GPIOA,GPIO_PIN_1)




//位置设定定义
#define POS_NOSET 0     //无定义位置（停止）
#define POS_FORWARD_LIMIT 1     //目标为正转限位开关处
#define POS_BACKWARD_LIMIT 2        //目标为反转限位开关处



//设置电机目标位置
void setMotor(u8 POS);


//单纯控制电机正转
void forward(void);

//单纯控制电机反转
void backward(void);

//电机停止
void stop(void);

//电机控制，在主循环调用，使电机向预设位置移动
void motor_loop(void);



#endif
